home *** CD-ROM | disk | FTP | other *** search
/ Freelog 125 / Freelog_MarsAvril2015_No125.iso / Musique / Quod Libet / quodlibet-3.3.0-installer.exe / bin / UserDict.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2014-12-31  |  8KB  |  284 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. '''A more or less complete user-defined wrapper around dictionary objects.'''
  5.  
  6. class UserDict:
  7.     
  8.     def __init__(self, dict = None, **kwargs):
  9.         self.data = { }
  10.         if dict is not None:
  11.             self.update(dict)
  12.         if len(kwargs):
  13.             self.update(kwargs)
  14.  
  15.     
  16.     def __repr__(self):
  17.         return repr(self.data)
  18.  
  19.     
  20.     def __cmp__(self, dict):
  21.         if isinstance(dict, UserDict):
  22.             return cmp(self.data, dict.data)
  23.         return None(self.data, dict)
  24.  
  25.     __hash__ = None
  26.     
  27.     def __len__(self):
  28.         return len(self.data)
  29.  
  30.     
  31.     def __getitem__(self, key):
  32.         if key in self.data:
  33.             return self.data[key]
  34.         if None(self.__class__, '__missing__'):
  35.             return self.__class__.__missing__(self, key)
  36.         raise None(key)
  37.  
  38.     
  39.     def __setitem__(self, key, item):
  40.         self.data[key] = item
  41.  
  42.     
  43.     def __delitem__(self, key):
  44.         del self.data[key]
  45.  
  46.     
  47.     def clear(self):
  48.         self.data.clear()
  49.  
  50.     
  51.     def copy(self):
  52.         if self.__class__ is UserDict:
  53.             return UserDict(self.data.copy())
  54.         import copy as copy
  55.         data = self.data
  56.         
  57.         try:
  58.             self.data = { }
  59.             c = copy.copy(self)
  60.         finally:
  61.             self.data = data
  62.  
  63.         c.update(self)
  64.         return c
  65.  
  66.     
  67.     def keys(self):
  68.         return self.data.keys()
  69.  
  70.     
  71.     def items(self):
  72.         return self.data.items()
  73.  
  74.     
  75.     def iteritems(self):
  76.         return self.data.iteritems()
  77.  
  78.     
  79.     def iterkeys(self):
  80.         return self.data.iterkeys()
  81.  
  82.     
  83.     def itervalues(self):
  84.         return self.data.itervalues()
  85.  
  86.     
  87.     def values(self):
  88.         return self.data.values()
  89.  
  90.     
  91.     def has_key(self, key):
  92.         return key in self.data
  93.  
  94.     
  95.     def update(self, dict = None, **kwargs):
  96.         if dict is None:
  97.             pass
  98.         elif isinstance(dict, UserDict):
  99.             self.data.update(dict.data)
  100.         elif isinstance(dict, type({ })) or not hasattr(dict, 'items'):
  101.             self.data.update(dict)
  102.         else:
  103.             for k, v in dict.items():
  104.                 self[k] = v
  105.             
  106.         if len(kwargs):
  107.             self.data.update(kwargs)
  108.  
  109.     
  110.     def get(self, key, failobj = None):
  111.         if key not in self:
  112.             return failobj
  113.         return None[key]
  114.  
  115.     
  116.     def setdefault(self, key, failobj = None):
  117.         if key not in self:
  118.             self[key] = failobj
  119.         return self[key]
  120.  
  121.     
  122.     def pop(self, key, *args):
  123.         return self.data.pop(key, *args)
  124.  
  125.     
  126.     def popitem(self):
  127.         return self.data.popitem()
  128.  
  129.     
  130.     def __contains__(self, key):
  131.         return key in self.data
  132.  
  133.     
  134.     def fromkeys(cls, iterable, value = None):
  135.         d = cls()
  136.         for key in iterable:
  137.             d[key] = value
  138.         
  139.         return d
  140.  
  141.     fromkeys = classmethod(fromkeys)
  142.  
  143.  
  144. class IterableUserDict(UserDict):
  145.     
  146.     def __iter__(self):
  147.         return iter(self.data)
  148.  
  149.  
  150. import _abcoll
  151. _abcoll.MutableMapping.register(IterableUserDict)
  152.  
  153. class DictMixin:
  154.     
  155.     def __iter__(self):
  156.         for k in self.keys():
  157.             yield k
  158.         
  159.  
  160.     
  161.     def has_key(self, key):
  162.         
  163.         try:
  164.             self[key]
  165.         except KeyError:
  166.             return False
  167.  
  168.         return True
  169.  
  170.     
  171.     def __contains__(self, key):
  172.         return self.has_key(key)
  173.  
  174.     
  175.     def iteritems(self):
  176.         for k in self:
  177.             yield (k, self[k])
  178.         
  179.  
  180.     
  181.     def iterkeys(self):
  182.         return self.__iter__()
  183.  
  184.     
  185.     def itervalues(self):
  186.         for _, v in self.iteritems():
  187.             yield v
  188.         
  189.  
  190.     
  191.     def values(self):
  192.         return [ v for _, v in self.iteritems() ]
  193.  
  194.     
  195.     def items(self):
  196.         return list(self.iteritems())
  197.  
  198.     
  199.     def clear(self):
  200.         for key in self.keys():
  201.             del self[key]
  202.         
  203.  
  204.     
  205.     def setdefault(self, key, default = None):
  206.         
  207.         try:
  208.             return self[key]
  209.         except KeyError:
  210.             self[key] = default
  211.  
  212.         return default
  213.  
  214.     
  215.     def pop(self, key, *args):
  216.         if len(args) > 1:
  217.             raise TypeError, 'pop expected at most 2 arguments, got ' + repr(1 + len(args))
  218.         
  219.         try:
  220.             value = self[key]
  221.         except KeyError:
  222.             if args:
  223.                 return args[0]
  224.  
  225.         del self[key]
  226.         return value
  227.  
  228.     
  229.     def popitem(self):
  230.         
  231.         try:
  232.             (k, v) = self.iteritems().next()
  233.         except StopIteration:
  234.             raise KeyError, 'container is empty'
  235.  
  236.         del self[k]
  237.         return (k, v)
  238.  
  239.     
  240.     def update(self, other = None, **kwargs):
  241.         if other is None:
  242.             pass
  243.         elif hasattr(other, 'iteritems'):
  244.             for k, v in other.iteritems():
  245.                 self[k] = v
  246.             
  247.         elif hasattr(other, 'keys'):
  248.             for k in other.keys():
  249.                 self[k] = other[k]
  250.             
  251.         else:
  252.             for k, v in other:
  253.                 self[k] = v
  254.             
  255.         if kwargs:
  256.             self.update(kwargs)
  257.  
  258.     
  259.     def get(self, key, default = None):
  260.         
  261.         try:
  262.             return self[key]
  263.         except KeyError:
  264.             return default
  265.  
  266.  
  267.     
  268.     def __repr__(self):
  269.         return repr(dict(self.iteritems()))
  270.  
  271.     
  272.     def __cmp__(self, other):
  273.         if other is None:
  274.             return 1
  275.         if None(other, DictMixin):
  276.             other = dict(other.iteritems())
  277.         return cmp(dict(self.iteritems()), other)
  278.  
  279.     
  280.     def __len__(self):
  281.         return len(self.keys())
  282.  
  283.  
  284.